人は何をもって物事を評価するだろうか---。記者の場合は,そもそもの発想の新しさや,ビジネス・プレゼンテーション(意味付け)の美しさと完成度に,コロリとやられてしまう。プライベートでは夕刊フジやZAKZAKのセンスの良さに純粋に笑い声を上げることも多いのだが,ビジネス分野での評価は我ながら辛い方だと思っている。

 かつて記者は,記者の眼や記者のつぶやきといったコラムで,IT(情報技術)のパラダイム・シフトに関する興味深いトピックを取り上げてきた。思い出すのは,「運用管理製品はイノベーションの宝庫」,「情報漏えい対策で加速する企業システムの“集中化”」,「“WAN高速化”VS“画面情報端末”,勝つのはどっち?」,「InfiniBandと10GbE,勝つのはどっち?」---,といった具合だ。

 もっとも,ここ15年ほどを鳥瞰すると,割りと少ない文字数で“ITのパラダイム・シフト”を説明できることに気付く。時系列で言えば,(1)メインフレームからWindowsへのダウンサイジング。(2)運用管理コストの削減を目的としたインターネット技術の社内活用。(3)Webインタフェースの流行とリッチ・クライアントの復興。(4)コンプライアンスを目的とした一極集中管理と,それを実現するための画面情報端末やWAFS(Wide Area File Service)などのコンセプト。(5)リアルタイム系BI(Business Intelligence)やSOA(Service-Oriented Architecture)などによる業務組織改革---。といったあたりだろうか。

 だが,日々消費される情報の中にも,キラリと光るネタがある。例えば,記者の中では「これを超えるネタは一生ないかも」という最大級の評価を得た製品,米Azul SystemsのCPUアプライアンスである。実際の姿を見るまで,記者にはそのような製品を想像することもできなかった(関連記事)。これからも,Azulの革新性に匹敵する,あるいは超える製品が登場するかも知れない。考えただけで興奮してしまうし,わくわくする。

 以下では,2006年から2007年にかけて記者を感動させた製品について,評価の高い順に,(A)発想の転換が素晴らしいネタ,(B)エッジが効いているネタ,(C)純粋に面白いネタ,(D)プレゼンの勝利と言えるネタ---,に分けて紹介する。いずれも自信を持って「(記者の)琴線に触れたネタ」と認定できる内容である。この変革の時代に生まれ,ITと関わることができたことに,心から感謝したい。

発想の転換1: Webサーバーがプッシュ配信する“Comet”

 1カ月ほど前に後輩記者から教えてもらった技術に“Comet”がある。少し話を聞いて興味を持ち,弊社が刊行しているプログラム学習用の市販月刊誌『日経ソフトウエア』(2007年1月号)の「簡単実装で学ぶWeb技術2006」第7回にCometが取り上げられていたので,目を通してみた。結城浩氏の寄稿原稿であり,記事の主旨は「リアルタイムにチャットができるWebアプリケーションを簡単実装することで,Cometを学ぼう」というものだ。

 Cometとは,WebサーバーからWebクライアントに情報をプッシュ配信するコンセプトと技術である。ユーザーの明示的なHTTP要求や(既存のAjaxに見られるような)Webクライアントによる自発的なHTTP要求などに対してその都度応えるのではなく,WebサーバーがWebサーバー自身の判断においてWebクライアントに情報をプッシュするというものだ。

 幸か不幸か,Webサーバー(httpd)は,NCSAやCERNの頃からApacheなど現代のWebサーバーに至るまで,Cometの機能を実装してこなかった。Web連携アプリケーションとの連携インタフェースなどには高速化や管理性といった改善が実施されてきたが,プッシュ配信のための機構は需要が少なかったのだろう。結果として,「HTTPとは,こういうものだ」という思い込みが,我々の頭の中に固定化されてきた。

 「プッシュ配信はしない」というHTTPの利用形態の常識を根本から覆す考え方が,Cometである。Webサーバーに機能を追加するだけで,Cometは容易に実現可能になる。従来であれば考えもしなかった使い方という意味で,その発想の豊かさと革新性に,記者はいたく感動してしまった。天動説が地動説になるくらいのインパクトがあると冗談抜きで思う。

 Cometの機能(プッシュ配信の機能)を用いて,すでに世の中に公開されているチャットサービスが「Lingr」である。米Infoteriaは2007年1月26日,API Keyを用いてマッシュ・アップするための「Lingr API」を公開して話題を呼んだ(関連記事1関連記事2)。

発想の転換2: JavaでなくC++開発向けのテンプレート・エンジン

 Webアプリケーションを開発するための仕掛けとして著名なものに,Apache Jakarta Projectの「Tomcat」などに代表されるServlet(サーブレット)コンテナがある。JavaプログラムのServletをWebサーバーと連携させるものだ。Servletのプリプロセスとして,コンパイルによってServletになるHTMLデザイン・テンプレートのJSP(Java Server Pages)なども存在する。MVCモデルを実現する「Struts」なども,このServletコンテナの上位で利用するものである。

 Javaのほかにも,PHPやRubyといったインタプリタ言語処理系が開発生産性の高さゆえによく使われるようになってきている。だが,コンパイル言語ではJavaがWebの世界を牛耳っている(例外は米Microsoftの.NETなど)。エンタープライズ系のベンダーが出荷するIBM WebSphereにしろBEA WebLogicにしろ,EJB(Enterprise Java Beans)コンテナだけでなくServletコンテナとしてJavaを利用している。

 こうしたJava優勢の世界で,C++によるWebアプリケーション開発の仕組みを提供している例が,ソフト会社のプリファードインフラストラクチャーが2006年10月13日に公開した「AzaraC(あざらし)」である(関連記事)。Web連携インタフェースこそ専用のAPIではなくシンプルなCGIだが,ServletとJSPのように,C++プログラム(+.cpp)とHTMLテンプレート(*.tpl)を分離して開発できるようにするものだ。Javaよりも高速に動作することが“ウリ”だ。「C++向けのソフト部品群を作ろう」と考える同社の発想に記者はやられてしまい,胸の奥からふつふつと湧き上がる感動の嵐とともに原稿を書いたことが思い出される。

 AzaraCでは,実に面白い工夫を施している。まず,HTMLテンプレートは,最初に呼び出された際にC++言語に変換され,動的リンク・ライブラリとしてコンパイルされる。一方,業務ロジックを記述するC++プログラムは,対となるHTMLテンプレートを動的にリンクするアプリケーションとなる。動的リンクされるHTMLテンプレートは,自身の参照解決に,自身を呼び出した業務ロジックのグローバル参照シンボルを利用する。こうした設計によって,デザインとロジックを分離しながら,デザインからロジックを自由に使えるようにしている。

エッジが効いている: 従来のやり方を技術が変える